iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
Security

現在是pwn的天下!系列 第 12

【Day-12】Return to libc

  • 分享至 

  • xImage
  •  

前言

昨天的return to plt是利用binary裡面已經使用過的函式去重新調用,進而開shell,但是如果binary都沒有用到呢? 今天就是要來探討要如何取得從頭到尾都沒有用到的函式

說明

如果能得知library被map到的base address,就可以計算libc function的address,就可以調用libc的function,假如有information leak的漏洞(例如format string),就可以透過leak memory的內容,拿到libc segment的address

  • bypass aslr拿到libc的隨機base
  • address會是隨機的base address加上一個固定的offset(libc offset),不同版本的libc offset不同

漏洞利用

我們如果拿到一個leak,那假如我們確定這個leak他是甚麼function (可用gdb attach 去查看)

  • 例如,我們leak出來的是printf@got的內容為0x7fd0f9e57e80,而binary的版本為2.27,我們就可以透過靜態分析(readelf -s...),得知function在library中的offset為0x684fe,扣掉offset就可以知道libc的base address ==> 0x7fd0f9e57e80 - 0x684fe
  • 拿到base之後我就可以加上offset的方式得知其他function的address去call它,最後串成ROP
  • system() = libc_base + system_offset

上一篇
【Day-11】Return to .plt
下一篇
【Day-13】pwnable - ORW
系列文
現在是pwn的天下!30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言